home *** CD-ROM | disk | FTP | other *** search
/ Windows News 2005 November / WNnov2005.iso / Windows / Indispensables / Movie Collection / MovieCollection5403.exe / {app} / php5 / updatebdd.class.php < prev   
PHP Script  |  2005-05-16  |  8KB  |  256 lines

  1. <?php
  2. header("Pragma: no-cache");
  3. //set_time_limit(0);
  4.  
  5. include_once('sql.class.php');
  6.  
  7. class TmcSqlXmlInitialize
  8. {
  9.    private $doc     = null;
  10.    private $xpath   = null;
  11.    private $sql=null;
  12.    private $cpt=0;
  13.  
  14.    private $array_fields        = array();
  15.    private $array_fields_name   = array();
  16.    private $array_fields_table  = array();
  17.    private $array_fields_values = array();
  18.  
  19.    function __construct($AxmlFileName, $AShowTrace)
  20.    {
  21.       $this->doc    = new DOMDocument();
  22.       $this->doc->load($AxmlFileName);
  23.  
  24.       $this->xpath  = new DOMXPath($this->doc);
  25.  
  26.       $this->sql    = new TmcSql($AShowTrace, TRUE);
  27.  
  28.       $echo=<<<MSG
  29.          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  30.          <html>
  31.          <head>
  32.          <title>Mise α jour de la base de donnΘe Movie collection</title>
  33.          <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  34.          <style type="text/css">
  35.          <!--
  36.          .text {
  37.              font-family: Arial, Helvetica, sans-serif;
  38.              font-size: 12px;
  39.              font-style: normal;
  40.              font-weight: normal;
  41.              color: #000000;
  42.          }
  43.          a:link {
  44.              color: #003366;
  45.              text-decoration: none;
  46.          }
  47.          a:hover {
  48.              text-decoration: underline;
  49.              color: #003366;
  50.          }
  51.          a:visited {
  52.              color: #003366;
  53.              text-decoration: none;
  54.          }
  55.          a:visited:hover {
  56.              color: #003366;
  57.              text-decoration: underline;
  58.          }
  59.          .titre {
  60.              font-family: Arial, Helvetica, sans-serif;
  61.              font-size: 14px;
  62.              font-style: normal;
  63.              font-weight: bold;
  64.              text-decoration: underline;
  65.              color: #000000;
  66.          }
  67.          -->
  68.          </style>
  69.          </head>
  70.          
  71.          <body>
  72.             <table width="70%"  cellspacing="0" bgcolor="#EDEDED" class='text'>
  73.                <tr>
  74.                   <td bordercolor="#EDEDED" bgcolor="#EDEDED"> 
  75. MSG;
  76.       print($echo);      
  77.    }
  78.  
  79.    function deleteEmpty()
  80.    {
  81.       unlink('empty.inc');
  82.    }
  83.  
  84.    function __destruct()
  85.    {
  86.       $this->writeHtmlMsg('<b>Mise α jour terminΘe</b>');
  87.       $ext = $_SESSION["mc_params"]->getPhpExtension();
  88.       $echo=<<<MSG
  89.                      <form name="formAccueil"  method="post" action="index$ext" >
  90.                         <input type="submit" name="submitGo" value="AccΘder au site" />
  91.                      </form>
  92.  
  93.                   </td> 
  94.                </tr>
  95.             </table>
  96.          </body>
  97.          </html>
  98. MSG;
  99.       print($echo);
  100.    }
  101.    
  102.    function writeHtmlMsg($Amsg)
  103.    {
  104.       $this->cpt++;
  105.       $echo=<<<MSG
  106.          <div id="idwrite{$this->cpt}">$Amsg<div>
  107.          <!--$Amsg<br />-->
  108. MSG;
  109.       print("\n".$echo);      
  110.       flush();
  111.       ob_flush();
  112.    }
  113.    
  114.    function loadFieldDefs()
  115.    {
  116.       $this->writeHtmlMsg('<b>Lecture de la structure de la base de donnΘe</b>');
  117.       
  118.       $res = $this->xpath->query('//DATAPACKET/METADATA/FIELDS/FIELD');
  119.       $i=0;
  120.       foreach ($res as $node)
  121.       {
  122.          $i++;
  123.          $fieldtype=$node->getAttribute('fieldtype');
  124.          $fieldsubtype=$node->getAttribute('SUBTYPE');
  125.          if (strlen($fieldtype)>0)
  126.          {
  127.             if (($fieldtype=='string') or ($fieldtype=='date') or (($fieldtype=='bin.hex') and ($fieldsubtype=='Text')))
  128.             {
  129.                $this->array_fields[$i]          = array($node->getAttribute('attrname'), 'string');
  130.                $this->array_fields_name[$i]     = $node->getAttribute('attrname');
  131.                $this->array_fields_table[$i]    = $node->getAttribute('attrname').' string';
  132.             }
  133.             elseif ($fieldtype[0]=='i')
  134.             {
  135.                $this->array_fields[$i]          = array($node->getAttribute('attrname'), 'int');
  136.                $this->array_fields_name[$i]     = $node->getAttribute('attrname');
  137.                $this->array_fields_table[$i]    = $node->getAttribute('attrname').' int';
  138.             }
  139.             elseif ($fieldtype[0]=='r')
  140.             {
  141.                $this->array_fields[$i]          = array($node->getAttribute('attrname'), 'real');
  142.                $this->array_fields_name[$i]     = $node->getAttribute('attrname');
  143.                $this->array_fields_table[$i]    = $node->getAttribute('attrname').' real';
  144.             }
  145.          }
  146.       }
  147.    }
  148.  
  149.    function createTableFilms()
  150.    {
  151.       $stmt  = '';
  152.       $stmt .='create table t_film ('."\n";
  153.       $stmt .= implode(', ', $this->array_fields_table);
  154.       $stmt .= ')';
  155.       $this->writeHtmlMsg("<b>Suppression de la table 't_film' </b>");
  156.       $this->sql->execSql_no_exception('drop table t_film');
  157.       
  158.       $this->writeHtmlMsg("<b>CrΘation de la table 't_film' </b>");
  159.       $this->sql->execSql($stmt);
  160.    }
  161.  
  162.    function createCollection()
  163.    {
  164.       $stmt  = '';
  165.       $stmt .='create table t_collection ('."\n";
  166.       $stmt .='IDX int, COLLECTION string'."\n";
  167.       $stmt .= ')';
  168.       $this->writeHtmlMsg("<b>Suppression de la table 't_collection' </b>");
  169.       $this->sql->execSql_no_exception('drop table t_collection');
  170.  
  171.       $this->writeHtmlMsg("<b>CrΘation de la table 't_collection' </b>");
  172.       $this->sql->execSql($stmt);
  173.    }
  174.  
  175.    function createCategorie()
  176.    {
  177.       $stmt  = '';
  178.       $stmt .='create table t_categorie ('."\n";
  179.       $stmt .='IDX int, CATEGORIE string'."\n";
  180.       $stmt .= ')';
  181.  
  182.       $this->writeHtmlMsg("<b>Suppression de la table 't_categorie' </b>");
  183.       $this->sql->execSql_no_exception('drop table t_categorie');
  184.  
  185.       $this->writeHtmlMsg("<b>CrΘation de la table 't_categorie' </b>");
  186.       $this->sql->execSql($stmt);
  187.    }
  188.  
  189.    function fillFilms()
  190.    {
  191.       $this->writeHtmlMsg("<b>Remplissage de la table 't_film' </b>");
  192.       $res = $this->xpath->query('//DATAPACKET/ROWDATA/ROW');
  193.       $stmt = '';
  194.       $count_enreg = 0;
  195.       foreach ($res as $node)
  196.       {
  197.          foreach ($this->array_fields_name as $key => $field)
  198.          {
  199.             $fieldvalue=utf8_decode($node->getAttribute($field));
  200.             if ($this->array_fields[$key][1]=='string')
  201.                $this->array_fields_values[$key] = "'".sqlite_escape_string($fieldvalue)."'";
  202.             else
  203.                $this->array_fields_values[$key] = $fieldvalue;
  204.             if ($fieldvalue=='')
  205.                $this->array_fields_values[$key] = 'null';
  206.          }
  207.          $stmt = 'insert into t_film ('.implode(', ', $this->array_fields_name).') values ('.
  208.             implode(', ', $this->array_fields_values).')';
  209.          $this->sql->execSql($stmt);
  210.          $count_enreg++;
  211.       }
  212.       $this->writeHtmlMsg("  $count_enreg enregistrements insΘrΘs");
  213.    }
  214.  
  215.    function fillCollections()
  216.    {
  217.       $this->writeHtmlMsg("<b>Remplissage de la table 't_collection' </b>");
  218.  
  219.       $stmt = 'select distinct idcollection, collection from t_film where idcollection is not null order by collection';
  220.       $result=$this->sql->openSql($stmt);
  221.       $count_enreg = 0;
  222.       foreach ($result as $idrow => $row)
  223.       {
  224.          $idcollection  = $row['idcollection'];
  225.          $collection    = sqlite_escape_string($row['collection']);
  226.  
  227.          $stmt = "insert into t_collection (idx, collection) values ($idcollection, '$collection')";
  228.          $this->sql->execSql($stmt);
  229.          $count_enreg++;
  230.       }
  231.       $this->writeHtmlMsg("  $count_enreg enregistrements insΘrΘs");
  232.    }
  233.  
  234.    function fillCategories()
  235.    {
  236.       $this->writeHtmlMsg("<b>Remplissage de la table 't_categorie' </b>");
  237.  
  238.       $stmt = 'select distinct idcategorie, categorie from t_film where idcategorie is not null order by categorie';
  239.       $result=$this->sql->openSql($stmt);
  240.       $count_enreg = 0;
  241.       foreach ($result as $idrow => $row)
  242.       {
  243.          $idcategorie  = $row['idcategorie'];
  244.          $categorie    = sqlite_escape_string($row['categorie']);
  245.  
  246.          $stmt = "insert into t_categorie (idx, categorie) values ($idcategorie, '$categorie')";
  247.          $this->sql->execSql($stmt);
  248.          $count_enreg++;
  249.       }
  250.       $this->writeHtmlMsg("  $count_enreg enregistrements insΘrΘs");
  251.    }
  252. }
  253.  
  254. ?>
  255.  
  256.